home *** CD-ROM | disk | FTP | other *** search
- /*
- File: Navigation.h
-
- Copyright: © 1992, 1995-1997 by Apple Computer, Inc., all rights reserved.
-
- */
-
- #ifndef __NAVIGATION__
- #define __NAVIGATION__
-
- #ifndef __APPLEEVENTS__
- #include <AppleEvents.h>
- #endif
-
- #ifndef __TRANSLATION__
- #include <Translation.h>
- #endif
-
- #ifndef __WINDOWS__
- #include <Windows.h>
- #endif
-
- #ifndef __CODEFRAGMENTS__
- #include <CodeFragments.h>
- #endif
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #if PRAGMA_IMPORT_SUPPORTED
- #pragma import on
- #endif
-
- #if PRAGMA_ALIGN_SUPPORTED
- #pragma options align=mac68k
- #endif
-
-
- /* Navigation Services Error Codes: */
- enum {
- missingKindStringErr = -5699,
- invalidCustomControlMessageErr = -5698
- };
-
- enum {
- kNavDialogaOptionsVersion = 0,
- kNavReplyRecordVersion = 0,
- kNavCBRecVersion = 0,
- kNavFileOrFolderVersion = 0,
- kNavMenuItemSpecVersion = 0
- };
-
- /* values for the "action" parameter of NavAskSaveChanges: */
- enum {
- kNavSaveChangesClosingDocument = 1, /* closing a document */
- kNavSaveChangesQuittingApplication = 2, /* quitting the application */
- kNavSaveChangesOther = 0 /* neither closing nor quitting */
- };
- typedef UInt32 NavAskSaveChangesAction;
-
-
- /* return values from NavAskSaveChanges, NavCustomAskSaveChanges: */
- enum {
- askSaveChangesSave = 1,
- askSaveChangesCancel = 2,
- askSaveChangesDontSave = 3
- };
- typedef UInt32 NavAskSaveChangesResult;
-
-
- /* return values from NavAskDiscardChanges: */
- enum {
- askDiscardChanges = 1,
- askDiscardChangesCancel = 2
- };
- typedef UInt32 NavAskDiscardChangesResult;
-
-
- /* NavFileInfo is the part of NavFileOrFolderInfo for files: */
- struct NavFileInfo {
- Boolean locked; /* file is locked */
- Boolean resourceOpen; /* resource fork is opened */
- Boolean dataOpen; /* data fork is opened */
- Boolean reserved;
- UInt32 dataSize; /* size of the data fork */
- UInt32 resourceSize; /* size of the resource fork */
- FInfo finderInfo; /* more file info: */
- FXInfo moreFinderInfo;
- };
- typedef struct NavFileInfo NavFileInfo;
-
- /* NavFolderInfo is the part of NavFileOrFolderInfo for folders and volumes: */
- struct NavFolderInfo {
- Boolean shareable;
- Boolean sharePoint;
- Boolean mounted;
- Boolean readable;
- Boolean writeable;
- Boolean reserved;
- UInt32 numberOfFiles;
- DInfo finderInfo;
- DXInfo moreFinderInfo;
- };
- typedef struct NavFolderInfo NavFolderInfo;
-
- /* NavFileOrFolderInfo is the structure passed to your filter proc for typeFSS AEDescs: */
- struct NavFileOrFolderInfo {
- UInt16 version;
- Boolean isFolder;
- Boolean visible;
- UInt32 creationDate;
- UInt32 modificationDate;
- union {
- NavFileInfo fileInfo;
- NavFolderInfo folderInfo;
- } u;
- char reserved[256];
- };
- typedef struct NavFileOrFolderInfo NavFileOrFolderInfo;
-
-
- /* =============================================================================================== */
- /* navigation event/callback information: */
-
- typedef UInt32 NavContext;
-
- struct NavCBRec {
- UInt16 version;
- NavContext context; /* used by customization code to call Navigation Services */
- WindowPtr window; /* the dialog */
- Rect customRect; /* local coordinate rectangle of customization area */
- Rect previewRect; /* local coordinate rectangle of the preview area */
- union {
- EventRecord* event; /* for event processing */
- void* param; /* points to event specific data */
- #ifndef __cplusplus
- } u;
- #else
- };
- #endif
- char reserved[256];
- };
-
- typedef struct NavCBRec NavCBRec;
- typedef NavCBRec *NavCBRecPtr;
-
- enum {
- kNavCBEvent, /* an event has occurred (update, idle events, etc.) */
- kNavCBCustomize, /* protocol for negotiating customization space */
- kNavCBStart, /* the navigation dialog is starting up */
- kNavCBTerminate, /* the navigation dialog is closing down */
- kNavCBAdjustRect, /* the navigation dialog is being resized */
- kNavCBNewLocation, /* user has chosen a new location in the browser */
- kNavCBShowDesktop, /* user has navigated to the desktop */
- kNavCBSelectEntry, /* user has made a selection in the browser */
- kNavCBPopupMenuSelect /* signifies that a popup menu selection was made */
- };
- typedef SInt32 NavEventCallbackMessage;
-
- typedef UInt32 NavCallBackUserData;
-
- /* for events and customization: */
- typedef pascal void (*NavEventProcPtr) ( const NavEventCallbackMessage callBackSelector,
- NavCBRecPtr callBackParms,
- NavCallBackUserData callBackUD );
- /* for preview support: */
- typedef pascal Boolean (*NavPreviewProcPtr) ( NavCBRecPtr callBackParms,
- NavCallBackUserData callBackUD );
-
- /* filtering callback information: */
- typedef pascal Boolean (*NavObjectFilterProcPtr) ( AEDesc* theItem,
- void* info,
- NavCallBackUserData callBackUD );
-
-
- #if GENERATINGCFM
- typedef UniversalProcPtr NavEventProcUPP;
- typedef UniversalProcPtr NavPreviewProcUPP;
- typedef UniversalProcPtr NavObjectFilterProcUPP;
- #else
- typedef NavEventProcPtr NavEventProcUPP;
- typedef NavPreviewProcPtr NavPreviewProcUPP;
- typedef NavObjectFilterProcPtr NavObjectFilterProcUPP;
- #endif
-
- enum {
- uppNavEventProcInfo = kPascalStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NavEventCallbackMessage)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NavCBRecPtr)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NavCallBackUserData)))
- ,
- uppNavPreviewProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NavCBRecPtr)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NavCallBackUserData)))
- ,
- uppNavObjectFilterProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(AEDesc*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void*)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NavCallBackUserData)))
- };
-
-
- #if GENERATINGCFM
- #define NewNavEventProc(userRoutine) \
- (NavEventProcUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavEventProcInfo, GetCurrentArchitecture())
- #define NewNavPreviewProc(userRoutine) \
- (NavPreviewProcUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavPreviewProcInfo, GetCurrentArchitecture())
- #define NewNavObjectFilterProc(userRoutine) \
- (NavObjectFilterProcUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavObjectFilterProcInfo, GetCurrentArchitecture())
- #else
- #define NewNavEventProc(userRoutine) \
- ((NavEventProcUPP) (userRoutine))
- #define NewNavPreviewProc(userRoutine) \
- ((NavPreviewProcUPP) (userRoutine))
- #define NewNavObjectFilterProc(userRoutine) \
- ((NavObjectFilterProcUPP) (userRoutine))
- #endif
-
-
- /* =============================================================================================== */
- /* custom control information: */
-
- enum {
- kNavCtlShowDesktop, /* show desktop, parms==nil */
- kNavCtlShowFavorite, /* show favorites, parms==nil */
- kNavCtlShowRecent, /* show recents, parms==nil */
- kNavCtlSortBy, /* sort key field, parms->NavSortKeyField */
- kNavCtlSortOrder, /* sort order, parms->NavSortOrder */
- kNavCtlScrollHome, /* scroll list home, parms==nil */
- kNavCtlScrollEnd, /* scroll list end, parms==nil */
- kNavCtlPageUp, /* page list up, parms==nil */
- kNavCtlPageDown, /* page list down, parms==nil */
- kNavCtlGetLocation, /* get current location, parms->AEDesc (filled in) */
- kNavCtlSetLocation, /* set current location, parms->AEDesc */
- kNavCtlGetSelection, /* get current selection, parms->AEDesc (filled in) */
- kNavCtlSetSelection, /* set current selection, parms->AEDesc */
- kNavCtlShowSelection, /* make selection visible, parms==nil */
- kNavCtlOpenSelection, /* open view of selection, parms==nil */
- kNavCtlEjectVolume, /* eject volume, parms->vRefNum */
- kNavCtlNewFolder, /* create a new folder, parms==StringPtr (Str31) */
- kNavCtlCancel, /* cancel dialog, parms==nil */
- kNavCtlAccept, /* accept dialog default, parms==nil */
- kNavCtlIsPreviewShowing, /* query preview status, parms->Boolean */
- kNavCtlAddControls, /* add custom controls parms->Handle (DITL list) */
- kNavCtlGetFirstControlID /* get 1st control ID, parms->UInt32 */
- };
- typedef SInt32 NavCustomControlMessage;
-
-
- /* browser sort keys: */
- enum {
- kNavSortNameField,
- kNavSortSizeField,
- kNavSortDateField
- };
- typedef UInt16 NavSortKeyField;
-
- /* browser sort orders: */
- enum {
- kNavSortAscending,
- kNavSortDescending
- };
- typedef UInt16 NavSortOrder;
-
-
- /* =============================================================================================== */
-
- /* dialog options and features: */
- enum {
- kDefaultNavDlogOptions = 0x00000000, /* use defaults for all the options */
- kNoTypePopup = 0x00000001, /* don't show file type/extension popup on Open/Save */
- kDontAutoTranslate = 0x00000002, /* don't automatically translate on Open */
- kDontAddTranslateItems = 0x00000004, /* don't add translation choices on Open/Save */
- kExtendPopup = 0x00000008, /* extend translation choices on Open/Save */
- kAllFilesInPopup = 0x00000010, /* "All Files" menu item in the type popup on Open */
- kAllowStationery = 0x00000020, /* allow saving of stationery files */
- kNavDialogOptionsUnused = 0xFFFFFFFF
- };
- typedef UInt32 NavDialogOptionFlags;
-
-
- /* 'open' resource data format: */
- struct OpenResource {
- OSType componentSignature;
- short reserved;
- short osTypeCount;
- OSType osType[1];
- };
- typedef struct OpenResource OpenResource, **OpenResourceHandle;
-
-
- /* options to designate how file(s) will be translated by NavTranslateFile(): */
- enum {
- kNavTranslateInPlace = 0, /* translate in place, replacing translation source file (default for Save) */
- kNavTranslateCopy /* translate to a copy of the source file (default for Open) */
- };
- typedef UInt32 NavTranslationOptions;
-
-
- /* definition for each menu item added to the open/save dialog's popup menu: */
- struct NavMenuItemSpec {
- UInt16 version;
- OSType creator; /* the application's signature */
- OSType type; /* data tag or file type */
- Str255 menuItemName;
- char reserved[249];
- };
- typedef struct NavMenuItemSpec NavMenuItemSpec, **NavMenuItemSpecHandle;
-
-
- /* options for affecting the appearance of a tility dialog: */
- struct NavDialogOptions {
- UInt16 version;
- NavDialogOptionFlags dialogOptionFlags; /* option flags for affecting the dialog's behavior */
- Point location; /* top-left location of the dialog, or {-1,-1} for default position */
- Str63 applicationName; /* application string to display in dialog window title (or null string for default) */
- Str31 actionButtonLabel; /* label of the default button (or null string for default) */
- Str31 cancelButtonLabel; /* label of the cancel button (or null string for default) */
- Str31 savedFileName; /* default name for text box in NavPutFile (or null string for default) */
- Str63 message; /* custom message prompt (or null string for default) */
- Boolean allowPreviews; /* allow to show previews */
- Boolean allowMultipleFiles; /* allow multiple items to be selected */
- Boolean allowInvisibleFiles; /* allow invisible items to be shown */
- Boolean dontResolveAliases; /* don't resolve aliases */
- UInt32 preferenceKey; /* a key for to managing preferences for using multiple utility dialogs */
- Handle popupExtension; /* extended popup menu items, an array of NavMenuItemSpecs */
- char reserved[14];
- };
- typedef struct NavDialogOptions NavDialogOptions;
-
-
- /* =============================================================================================== */
- /* data returned by the utility dialogs: */
-
- struct NavReplyRecord {
- UInt16 version;
- Boolean validRecord; /* open/save: true if the user confirmed a selection, false on cancel */
- Boolean replacing; /* save: true if the user is overwriting an existing object for save */
- Boolean isStationery; /* save: true if the user wants to save an object as stationery */
- Boolean translationNeeded; /* save: translation is 'needed', open: translation 'has taken place' */
- AEDescList selection; /* open/save: list of AppleEvent descriptors of the chosen object(s) */
- ScriptCode theScriptCode; /* open/save: script in which the name of each item in 'selection' is to be displayed */
- FileTranslationSpec **fileTranslation; /* open/save: list of file translation specs of the chosen object(s), if translation is needed */
- char reserved[236];
- };
- typedef struct NavReplyRecord NavReplyRecord;
-
-
- /* =============================================================================================== */
-
- extern pascal UInt32 NavLibraryVersion(void); /* returns the current version of Navigation Services */
-
- extern pascal OSErr NavGetDefaultDialogOptions(NavDialogOptions* dialogOptions);
- /* initializes and sets up the dialog options or features to the default state: */
-
- extern pascal OSErr NavGetFile( AEDesc* defaultLocation,
- NavReplyRecord* reply,
- NavDialogOptions* dialogOptions,
- NavEventProcUPP eventProc,
- NavPreviewProcUPP previewProc,
- NavCallBackUserData callBackUD,
- Handle openResource,
- NavObjectFilterProcUPP filterProc );
-
- extern pascal OSErr NavPutFile( AEDesc* defaultLocation,
- NavReplyRecord* reply,
- NavDialogOptions* dialogOptions,
- NavEventProcUPP eventProc,
- NavCallBackUserData callBackUD,
- OSType fileType,
- OSType fileCreator );
-
- extern pascal OSErr NavAskSaveChanges( StringPtr applicationName,
- StringPtr documentName,
- NavAskSaveChangesAction action,
- NavAskSaveChangesResult* reply,
- NavEventProcUPP eventProc,
- NavCallBackUserData callBackUD );
-
- extern pascal OSErr NavCustomAskSaveChanges( StringPtr message,
- NavAskSaveChangesResult* reply,
- NavEventProcUPP eventProc,
- NavCallBackUserData callBackUD );
-
- extern pascal OSErr NavAskDiscardChanges( StringPtr documentName,
- NavAskDiscardChangesResult* reply,
- NavEventProcUPP eventProc,
- NavCallBackUserData callBackUD );
-
- extern pascal OSErr NavChooseFile( AEDesc* defaultLocation,
- NavReplyRecord* reply,
- NavDialogOptions* dialogOptions,
- NavEventProcUPP eventProc,
- NavPreviewProcUPP previewProc,
- NavCallBackUserData callBackUD,
- OSType fileType );
-
- extern pascal OSErr NavChooseFolder( AEDesc* defaultLocation,
- NavReplyRecord* reply,
- NavDialogOptions* dialogOptions,
- NavEventProcUPP eventProc,
- NavCallBackUserData callBackUD );
-
- extern pascal OSErr NavChooseVolume( NavReplyRecord* reply,
- NavDialogOptions* dialogOptions,
- NavEventProcUPP eventProc,
- NavCallBackUserData callBackUD);
-
- extern pascal OSErr NavNewFolder( AEDesc* defaultLocation,
- NavReplyRecord* reply,
- NavDialogOptions* dialogOptions,
- NavEventProcUPP eventProc,
- NavCallBackUserData callBackUD );
-
- extern pascal OSErr NavTranslateFile( NavReplyRecord* reply, NavTranslationOptions howToTranslate );
-
- extern pascal OSErr NavCompleteSave( NavReplyRecord* reply, NavTranslationOptions howToTranslate );
-
- extern pascal OSErr NavCustomControl( NavContext context, NavCustomControlMessage selector, void* parms );
-
- extern pascal OSErr NavDisposeReply( NavReplyRecord* reply );
-
-
- /* =============================================================================================== */
- /* Checking for library availability: */
-
- #if GENERATINGCFM
- #if __cplusplus
- inline pascal Boolean NavServicesAvailable() { return NavLibraryVersion != (void*)kUnresolvedCFragSymbolAddress; }
- #else
- #define NavServicesAvailable() (NavLibraryVersion != (void*)kUnresolvedCFragSymbolAddress)
- #endif
- #else
- pascal Boolean NavServicesAvailable();
- #endif
-
-
- #if PRAGMA_ALIGN_SUPPORTED
- #pragma options align=reset
- #endif
-
- #if PRAGMA_IMPORT_SUPPORTED
- #pragma import off
- #endif
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* __NAVIGATION__ */